﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using pwblog.Entities;
using pwblog.DataAccess;

namespace pwblog.BusinessObject
{
    public class MenuBo
    {
        private MenuDao menuDao;

        /// <summary>
        /// Hàm khởi tạo
        /// </summary>
        public MenuBo()
        {
            menuDao = new MenuDao();
        }

        /// <summary>
        /// lấy danh sách menu
        /// </summary>
        /// <returns></returns>
        public Menu[] GetMenus()
        {
            return menuDao.GetMenus().ToArray();
        }

        /// <summary>
        /// Thêm menu vào csdl
        /// </summary>
        /// <param name="menu"></param>
        /// <returns></returns>
        public int InsertMenu(Menu menu)
        {
            return menuDao.InsertMenu(menu);
        }

        /// <summary>
        /// Cập nhật thông tin menu
        /// </summary>
        /// <param name="id">id menu</param>
        /// <param name="menuTitle">tiêu đề menu</param>
        /// <param name="menuUrl">Đường dẫn menu</param>
        /// <param name="parent">id của menu cha (nullable)</param>
        /// <param name="SortOrder">số nguyên dương, chỉ ra vị trí sắp xếp của menu trong tập các menu cùng parent</param>
        /// <param name="MenuIcon">Icon của menu</param>
        /// <returns>true/false</returns>
        public bool UpdateMenu(int id, String menuTitle, String menuUrl, int parent, int sortOrder, String menuIcon)
        {
            try
            {
                Menu menu = new Menu();
                menu.id = id;
                menu.MenuTitle = menuTitle;
                menu.MenuUrl = menuUrl;
                menu.Parent = parent;
                menu.SortOrder = sortOrder;
                menu.MenuIcon = menuIcon;
                menuDao.UpdateMenu(menu);

                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        /// <summary>
        /// </summary>
        public bool DeleteMenu(int id)
        {
            try
            {
                // Tìm các menu con và delete trước
                Menu[] childrenMenu = menuDao.GetMenusByParentId(id);
                if (childrenMenu.Length > 0)
                {
                    foreach (Menu child in childrenMenu)
                    {
                        DeleteMenu(child.id);
                    }
                }
                else
                {
                    menuDao.DeleteMenu(menuDao.GetMenuById(id));
                }
                return true;

            }
            catch (Exception ex)
            {
                return false;
            }
        }


    }
}